import java.util.ArrayList;
import java.util.List;

public class Fach implements Comparable<Fach>{
    String fach;
    int stunden;
    List<Lehrer> lehrer = new ArrayList<Lehrer>();

    /**
     * Konstruiert das Fach mit Werten
     * @param fach
     * @param stunden
     * @param lehrer
     */
    public Fach(String fach, int stunden, List<Lehrer> lehrer) {
        this.fach = fach;
        this.stunden = stunden;
        this.lehrer = lehrer;
    }

    /**
     * Konstruiert mit leeren werten
     */
    public Fach() {
        this("N/A ", 0, null);
    }

    /**
     * Konstruiert ein Fach nur mit einem Fach
     * @param fach
     */
    public Fach(String fach) {
        this.fach = fach;
    }

    /**
     * Fügt einen Lehrer zum Fach hinzu
     * @param lehrer
     */
    public void addLehrer(Lehrer lehrer) {
        this.lehrer.add(lehrer);
    }

    /**
     * Entfernt einen Lehrer vom Fach
     * @param lehrer
     */
    public void removeLehrer(Lehrer lehrer) {
        this.lehrer.remove(lehrer);
    }

    /**
     * Gibt die Lehrer Liste zurück
     * @return
     */
    public List<Lehrer> getLehrer() {
        return lehrer;
    }

    /**
     * Gibt das Fach zurück
     * @return
     */
    public String getFach() {
        return fach;
    }

    /**
     * Legt das Fach fest
     * @param fach
     */
    public void setFach(String fach) {
        this.fach = fach;
    }

    /**
     * Gibt das Fach mit den Lehrern die es unterrichten können aus
     * @return
     */
    @Override
    public String toString() {
        return "\n("+fach+lehrer+")";
    }

    /**
     * Vergleich das Fach mit den anderen Fächern
     * @param o
     * @return
     */
    @Override
    public int compareTo(Fach o) {
        return fach.compareTo(o.fach);
    }
    /*
     * Halbjahre in denen ein Lehrer unterrichtet fehlen noch
     */
}
